home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Nibble Volume 09, No. 11 (1988-11)(MicroSPARC)(Side B).zip / Nibble Volume 09, No. 11 (1988-11)(MicroSPARC)(Side B).do / NW.BIN.S < prev    next >
Text File  |  1996-12-24  |  24KB  |  830 lines

  1. $BA                      ; ":"
  2.           STA (BASL),Y
  3.           INY
  4.           LDX #0
  5. PELP3     LDA #$AD       ; PRINT TOP
  6.           STA (BASL),Y   ; AND BOTTOM
  7.           INY            ; LINES
  8.           INX
  9.           CPX #4
  10.           BNE PELP3
  11.           CPY #40
  12.           BNE PELP2
  13.           LDY #0
  14.           LDA #22
  15.           JSR TABV
  16.           LDA #$AD
  17. PELP4     STA (BASL),Y
  18.           INY
  19.           CPY #40
  20.           BNE PELP4      ;--
  21.           LDA #2         ;--
  22.           STA WINDT      ; SET
  23.           LDA #22        ; WINDOWS
  24.           STA WINDB      ;--
  25.           RTS
  26. *************************
  27. * PRINT MESSAGE TO SCREEN
  28. *************************
  29. MESSAGE   STA TMP
  30.           STX TMP1
  31.           LDY #0
  32.           LDA (TMP),Y
  33.           STA CH
  34.           INY
  35.           LDA (TMP),Y
  36.           JSR TABV
  37. MGLP      INY
  38.           LDA (TMP),Y
  39.           BEQ MSG1
  40.           JSR COUT
  41.           BNE MGLP
  42. MSG1      JSR CLREOL
  43.           RTS
  44. *****************************
  45. * SET MEMORY POINTER TO $7000
  46. *****************************
  47. SETCM     LDA #0
  48.           STA CML
  49.           LDA #$70
  50.           STA CMH
  51.           LDA #1
  52.           STA LN
  53.           RTS
  54. ****************
  55. * SAVE VARIABLES
  56. ****************
  57. SAVALL    JSR SAVCSR
  58.           LDA CML
  59.           STA PTRSAV
  60.           LDA CMH
  61.           STA PTRSAV+1
  62.           LDA LN
  63.           STA LNSAV
  64.           RTS
  65. *******************
  66. * RESTORE VARIABLES
  67. *******************
  68. RESALL    JSR RESCSR
  69.           LDA PTRSAV
  70.           STA CML
  71.           LDA PTRSAV+1
  72.           STA CMH
  73.           LDA LNSAV
  74.           STA LN
  75.           RTS
  76. **********************
  77. * SAVE CURSOR SETTINGS
  78. **********************
  79. SAVCSR    LDA CH
  80.           STA CHSAV
  81.           LDA CV
  82.           STA CVSAV
  83.           RTS
  84. *************************
  85. * RESTORE CURSOR SETTINGS
  86. *************************
  87. RESCSR    LDA CHSAV
  88.           STA CH
  89.           LDA CVSAV
  90.           JSR TABV
  91.           RTS
  92. **********************************
  93. * MOVE MEMORY POINTER TO NEXT LINE
  94. **********************************
  95. NXTLN     CLC
  96.           LDA CML
  97.           ADC #40
  98.           BCC NXT1
  99.           INC CMH
  100. NXT1      STA CML
  101.           INC LN
  102.           RTS
  103. **************************************
  104. * MOVE MEMORY POINTER TO PREVIOUS LINE
  105. **************************************
  106. PRELN     SEC
  107.           LDA CML
  108.           SBC #40
  109.           BCS PRE1
  110.           DEC CMH
  111. PRE1      STA CML
  112.           DEC LN
  113.           RTS
  114. ***************************
  115. * SET MEM & CV TO NEXT LINE
  116. ***************************
  117. SETNXTLN  JSR LF
  118.           JSR NXTLN
  119.           RTS
  120. *******************************
  121. * SET MEM & CV TO PREVIOUS LINE
  122. *******************************
  123. SETPRELN  JSR UP
  124.           JSR PRELN
  125.           RTS
  126. ******************************
  127. * GO TO BEGINNING OF NEXT LINE
  128. ******************************
  129. BNXTLN    LDA #0
  130.           STA CH
  131.           JSR SETNXTLN
  132.           RTS
  133. *****************
  134. * SET LINE TO FLN
  135. *****************
  136. SETFLN    JSR SETCM
  137. STLP      LDA LN
  138.           CMP FLN
  139.           BEQ SFN1
  140.           JSR NXTLN
  141.           JMP STLP
  142. SFN1      RTS
  143. ***************
  144. * MAKE NEW LINE
  145. ***************
  146. NEWLN     LDA #0
  147.           LDY #40
  148. NWLP      STA (CML),Y
  149.           DEY
  150.           BPL NWLP
  151.           INC LLN
  152.           RTS
  153. **********************
  154. * FIND END OF DOCUMENT
  155. **********************
  156. FENDOC    JSR SETCM
  157. FENDOC1   LDY #0
  158. FELP      LDA (CML),Y
  159.           BEQ FED1
  160.           JSR NXTLN
  161.           JMP FELP
  162. FED1      RTS
  163. ********************
  164. * SET MEM MOVE START
  165. ********************
  166. SETMMS    JSR NXTLN
  167.           LDA CML
  168.           STA MMS
  169.           LDA CMH
  170.           STA MMS+1
  171.           RTS
  172. ******************
  173. * SET MEM MOVE END
  174. ******************
  175. SETMME    JSR FENDOC
  176. SETMME1   JSR NXTLN
  177.           LDA CML
  178.           STA MME
  179.           LDA CMH
  180.           STA MME+1
  181.           RTS
  182. **************************
  183. * SET MEM MOVE DESTINATION
  184. **************************
  185. SETMMD    LDA CML
  186.           STA MMD
  187.           LDA CMH
  188.           STA MMD+1
  189.           RTS
  190. ***************
  191. * MOVE MEM DOWN
  192. ***************
  193. MOVDN     LDY #0
  194.           JSR MOVE
  195.           RTS
  196. *************
  197. * MOVE MEM UP
  198. *************
  199. MOVUP     LDY #0
  200. MMLP      LDA (MME),Y
  201.           STA (MMD),Y
  202.           LDA MMS        ;--
  203.           CMP MME        ; REACHED START
  204.           LDA MMS+1      ; OF MEMORY
  205.           SBC MME+1      ; FOR MOVE?
  206.           BCS MVP3       ; YES
  207.           LDA MMD
  208.           BNE MVP1
  209.           DEC MMD+1
  210. MVP1      DEC MMD
  211.           LDA MME
  212.           BNE MVP2
  213.           DEC MME+1
  214. MVP2      DEC MME
  215.           JMP MMLP
  216. MVP3      RTS
  217. ***********
  218. * CHECKS #1
  219. ***********
  220. CHECK1    JSR CKLLN      ; LAST LINE?
  221.           BNE CK11       ; NO
  222.           JSR NXTLN
  223.           JSR NEWLN
  224.           JSR PRELN
  225. CK11      JSR CKWINB
  226.           BNE CK12
  227.           INC FLN        ; SCROLL
  228.           JSR PRNTDOC    ; UP
  229.           JSR UP
  230. CK12      RTS
  231. ***********
  232. * CHECKS #2
  233. ***********
  234. CHECK2    LDA #0
  235.           STA TMP
  236.           JSR CKBCSR     ; 0 BEFORE CURSOR?
  237.           BEQ CK21       ; YES
  238.           CMP #$0D       ; CR BEFORE CURSOR?
  239.           BNE CK24       ; NO
  240.           JMP CK23
  241. CK21      LDY CH
  242. CKLP      DEY            ;--
  243.           LDA (CML),Y    ; SWITCH
  244.           BNE CK22       ; SPACES
  245.           JSR STRSPCM    ; FOR 0'S
  246.           CPY #0         ; BEFORE
  247.           BEQ CK24       ; CURSOR
  248.           JMP CKLP       ;--
  249. CK22      CMP #$0D       ; CR BEFORE CURSOR?
  250.           BNE CK24       ; NO
  251. CK23      INC TMP
  252.           JSR STRSPCM    ; STORE SPACE IN MEM
  253. CK24      RTS
  254. *************
  255. * STORE ENTRY
  256. *************
  257. STORENT   LDA KBD
  258.           LDY CH
  259.           STA (CML),Y
  260.           ORA #$80
  261.           JSR COUT
  262.           RTS
  263. ********************
  264. * STORE SPACE IN MEM
  265. ********************
  266. STRSPCM   LDA #$20
  267.           STA (CML),Y
  268.           RTS
  269. *******************
  270. * STORE ZERO IN MEM
  271. *******************
  272. STOR0M    LDA #0
  273.           STA (CML),Y
  274.           RTS
  275. ***************************
  276. * PRINT CHARACTER TO SCREEN
  277. ***************************
  278. PRCHAR    LDA (CML),Y
  279.           BEQ PRC1
  280.           CMP #$0D
  281.           BNE PRC2
  282.           LDA CRSF
  283.           BEQ PRC1
  284.           LDA #$2A       ; INVERSE ASTERISK
  285.           JMP PRC3
  286. PRC1      LDA #$20
  287. PRC2      ORA #$80
  288. PRC3      STA (BASL),Y
  289.           RTS
  290. ****************************
  291. * PRINT 20 LINES OF DOCUMENT
  292. ****************************
  293. PRNTDOC   JSR SAVALL
  294. PRNTDOC1  JSR SETFLN
  295.           LDA #2
  296.           JSR TABV
  297. PDLP1     LDY #39        ;--
  298. PDLP2     JSR PRCHAR     ; PRINT
  299.           DEY            ; ONE
  300.           BPL PDLP2      ; LINE
  301.           LDA LN
  302.           CMP LLN        ; LAST LINE?
  303.           BEQ PD1        ; YES
  304.           LDA CV
  305.           CMP #21        ; OR BOTTOM OF WINDOW?
  306.           BEQ PD1        ; YES
  307.           JSR SETNXTLN   ; MOVE TO NEXT LINE
  308.           JMP PDLP1      ; AND PRINT IT
  309. PD1       JSR RESALL
  310.           RTS
  311. **********************
  312. * PRINT LINE & COL #'S
  313. **********************
  314. PRNTLC    JSR SAVCSR
  315.           LDA #MSGLC     ; PRINT
  316.           LDX #MSGLC/    ; LINE/COLUMN
  317.           JSR MESSAGE    ; MESSAGE
  318.           LDA #5         ;
  319.           STA CH         ; PRINT NEW
  320.           LDA #0         ; LINE NUMBER
  321.           LDX LN         ; MSB-ACC
  322.           JSR OUTNUM     ; LSB-X
  323.           LDA #17        ;--
  324.           STA CH         ; PRINT NEW
  325.           LDA #0         ; COLUMN
  326.           LDX CHSAV      ; NUMBER
  327.           INX            ;
  328.           JSR OUTNUM     ;--
  329.           JSR RESCSR
  330.           RTS
  331. ************************
  332. * VARIOUS CHECKS & TESTS
  333. ************************
  334. CKELN     LDY CH
  335.           CPY #39
  336.           RTS
  337. *
  338. CK0BLN    LDY #0
  339.           LDA (CML),Y
  340.           RTS
  341. *
  342. CK0ELN    LDY #39
  343.           LDA (CML),Y
  344.           RTS
  345. *
  346. CKBCSR    LDY CH
  347.           DEY
  348.           LDA (CML),Y
  349.           RTS
  350. *
  351. CKUCSR    LDY CH
  352.           LDA (CML),Y
  353.           RTS
  354. *
  355. CKACSR    LDY CH
  356.           INY
  357.           LDA (CML),Y
  358.           RTS
  359. *
  360. CKNXTLN0  LDY #40
  361.           LDA (CML),Y
  362.           RTS
  363. *
  364. CKLN1     LDA LN
  365.           CMP #1
  366.           RTS
  367. *
  368. CKFLN     LDA LN
  369.           CMP FLN
  370.           RTS
  371. *
  372. CKLLN     LDA LN
  373.           CMP LLN
  374.           RTS
  375. *
  376. CKLMT     LDA LN
  377.           CMP #241
  378.           RTS
  379. *
  380. CKFDOC    LDA LLN
  381.           CMP #241
  382.           RTS
  383. *
  384. CKWINT    LDA CV
  385.           CMP #2
  386.           RTS
  387. *
  388. CKWINB    LDA CV
  389.           CMP #21
  390.           RTS
  391. *
  392. CKSPCK    LDA KBD
  393.           CMP #$20
  394.           RTS
  395. *
  396. CKSPCM    LDA (CML),Y
  397.           CMP #$20
  398.           RTS
  399. *
  400. CKCRM     LDA (CML),Y
  401.           CMP #$0D
  402.           RTS
  403. *****************************
  404. * GET WORD LENGTH FOR WRAP UP
  405. *****************************
  406. CHKWRD    JSR COUNT0
  407.           JSR NXTLN
  408.           LDY #0         ;--
  409.           LDX #0         ;
  410.           LDA (CML),Y    ;
  411.           CMP #$20       ; GET LENGTH
  412.           BEQ CKW1       ;
  413.           CMP #$0D       ; OF FIRST
  414.           BEQ CKW1       ;
  415. CWLP1     INY            ; WORD
  416.           LDA (CML),Y    ;
  417.           BEQ CKW1       ; ON LINE
  418.           CMP #$0D       ;
  419.           BEQ CKW1       ;
  420.           CMP #$20       ;
  421.           BNE CWLP1      ;
  422. CKW1      INY            ;
  423.           STY WRDLEN     ;--
  424.           SEC            ; COMPARE TO
  425.           CPY LEN0       ; LENGTH OF 0'S
  426.           BEQ CKW2       ; EQUAL
  427.           INX
  428.           DEY
  429.           BCC CWLP1      ; SHORTER
  430.           CPX #1         ; FIRST WORD?
  431.           BNE CWLP2      ; NO
  432.           INC STOPF
  433.           BNE CKW2
  434. CWLP2     DEY            ;--
  435.           JSR CKSPCM     ; STRIP OFF
  436.           BNE CWLP2      ; A WORD
  437.           INY            ;
  438.           STY WRDLEN     ;--
  439. CKW2      JSR PRELN
  440.           RTS
  441. ***********************************
  442. * GET LENGTH OF WORD AT END OF LINE
  443. ***********************************
  444. GETWRDLN  LDX #0
  445.           JSR CK0ELN
  446.           CMP #$0D       ; CHECK FOR
  447.           BNE GWLP1      ; CR IN
  448.           INC CRF        ; WORD
  449. GWLP1     CPY #0
  450.           BEQ GTW1
  451.           DEY
  452.           INX
  453.           JSR CKSPCM
  454.           BNE GWLP1
  455.           STX WRDLEN
  456.           RTS
  457. GTW1      LDA #1
  458.           STA WRDLEN
  459.           RTS
  460. ********************************
  461. * GET LENGTH FROM CH TO END LINE
  462. ********************************
  463. GTWRDLN1  SEC
  464.           LDA #40
  465.           SBC CH
  466.           STA WRDLEN
  467.           RTS
  468. **************
  469. * MOVE WORD UP
  470. **************
  471. MOVWRDUP  SEC
  472.           LDA #40
  473.           STA YHI
  474.           SBC LEN0
  475.           STA YLO
  476.           LDX WRDLEN
  477. MULP      LDY YHI
  478.           LDA (CML),Y
  479.           LDY YLO
  480.           STA (CML),Y
  481.           INC YLO
  482.           INC YHI
  483.           DEX
  484.           BNE MULP
  485.           RTS
  486. ****************
  487. * MOVE WORD DOWN
  488. ****************
  489. MOVWRDN   SEC
  490.           LDA #40
  491.           STA YHI
  492.           SBC WRDLEN
  493.           STA YLO
  494. MDLP1     LDY YLO
  495.           LDA (CML),Y
  496.           BEQ MWD1
  497.           LDY YHI
  498.           STA (CML),Y
  499.           INC YHI
  500.           LDY YLO
  501.           JSR STOR0M
  502.           INY
  503.           STY YLO
  504.           CPY #40
  505.           BNE MDLP1
  506. MWD1      RTS
  507. *******************
  508. * MOVE LINE TO LEFT
  509. *******************
  510. MOVLNL    LDY WRDLEN
  511.           STY YHI
  512.           LDY #0
  513.           STY YLO
  514.           LDY YHI
  515.           LDA (CML),Y
  516.           BNE MLLP1
  517.           INC CRF        ; IF CR IN WORD MOVED
  518. MLLP1     LDY YHI
  519.           LDA (CML),Y
  520.           LDY YLO
  521.           STA (CML),Y
  522.           CMP #$0D       ; CHECK FOR
  523.           BNE MLL1       ; CR IN
  524.           INC STOPF      ; LINE
  525. MLL1      INC YLO
  526.           INC YHI
  527.           LDY YHI
  528.           CPY #40
  529.           BNE MLLP1
  530.           LDY YLO
  531. MLLP2     JSR STOR0M     ; FILL REST
  532.           INY            ; OF LINE
  533.           CPY #40        ; WITH 0'S
  534.           BNE MLLP2
  535.           RTS
  536. *******************
  537. * MOVE LINE RIGHT 1
  538. *******************
  539. MOVLNR1   LDY #39
  540. MRLP      DEY
  541.           LDA (CML),Y
  542.           INY
  543.           STA (CML),Y
  544.           DEY
  545.           CPY CH
  546.           BNE MRLP
  547.           RTS
  548. *******************
  549. * MAKE A BLANK LINE
  550. *******************
  551. MBLANKLN  JSR SAVALL
  552.           JSR SETMMS     ;--
  553.           JSR SETMME     ; SET MEMORY
  554.           JSR NXTLN      ; POINTERS AND
  555.           JSR SETMMD     ; MOVE MEMORY
  556.           JSR MOVUP      ;--
  557.           JSR RESALL
  558.           JSR NXTLN      ; FILL NEW LINE
  559.           JSR LINE0      ; WITH 0'S
  560.           INC LLN
  561.           JSR RESALL
  562.           RTS
  563. **********************
  564. * CHECK FOR CR ON LINE
  565. **********************
  566. CHKCR     LDY #0
  567. CKRLP     JSR CKCRM
  568.           BNE CKR1
  569.           INC CRF
  570. CKR1      INY
  571.           CPY #40
  572.           BNE CKRLP
  573.           RTS
  574. **********************************
  575. * GET LENGTH OF 0'S AT END OF LINE
  576. **********************************
  577. COUNT0    LDY #40
  578.           LDX #$FF
  579. CTLP      DEY
  580.           INX
  581.           LDA (CML),Y
  582.           BEQ CTLP
  583.           STX LEN0
  584.           RTS
  585. ********************
  586. * FILL LINE WITH 0'S
  587. ********************
  588. LINE0     LDY #39
  589. L0LP      JSR STOR0M
  590.           DEY
  591.           BPL L0LP
  592.           RTS
  593. ***************************
  594. * PRINT DOCUMENT TO PRINTER
  595. ***************************
  596. PPRINT    JSR SETCM
  597.           LDA #0
  598.           STA STOPF
  599.           JSR PAUSE
  600.           LDA STOPF
  601.           BEQ PPR1
  602.           JMP PRTN1
  603. PPR1      JSR PRNTLM
  604.           LDY #0
  605.           STY CRF
  606.           STY PPOS
  607.           DEY
  608.           LDA STROBE
  609. NXTWRD    LDA KBD        ;--
  610.           BPL PPR2       ; ESCAPE KEY
  611.           CMP #$9B       ; PRESSED?
  612.           BNE PPR2       ;--
  613.           JMP PRTN       ; YES
  614. PPR2      LDA STROBE
  615.           LDX #0
  616. PPLP1     INX
  617. PPLP2     INY
  618.           CPY #40        ; END OF LINE?
  619.           BNE PPR3       ; NO
  620.           LDA (CML),Y    ; END OF DOCUMENT?
  621.           BEQ PRTN       ; YES
  622.           JSR NXTLN      ; MOVE MEM PTR
  623.           DEC LN         ; RESET LINE
  624.           LDY #0         ; RESET Y
  625. PPR3      LDA (CML),Y
  626.           BEQ PPLP2      ; IF 0, MOVE ON
  627.           INC PPOS
  628.           LDA PPOS
  629.           CMP RM         ; RIGHT MARGIN?
  630.           BNE PPR4       ; NO
  631.           INC CRF        ; SET CR FLAG
  632. PPR4      LDA (CML),Y
  633.           CMP #$0D       ; CHARACTER CR?
  634.           BEQ PPR5       ; YES
  635.           CMP #$20       ; CHAR SPACE?
  636.           BNE PPLP1      ; NO
  637. PPR5      STX WRDLEN
  638.           LDA CRF        ; CR FLAG SET?
  639.           BEQ PWRD       ; NO
  640.           STY YSAV1
  641.           LDA #$0D
  642.           JSR PGEND
  643.           LDA STOPF
  644.           BNE PRTN1
  645.           JSR PRNTLM     ; PRINT LEFT MARGIN
  646.           LDY #0
  647.           STY CRF        ; RESET CR FLAG
  648.           LDY WRDLEN     ; WRDLEN
  649.           STY PPOS       ; & PPOS
  650.           LDY YSAV1      ; RESTORE Y
  651. PWRD      LDX #0
  652.           INY
  653.           SEC            ; RESET Y TO
  654.           TYA            ;
  655.           SBC WRDLEN     ; START OF WORD
  656.           TAY
  657.           DEY
  658. PPLP3     INX
  659.           INY
  660.           LDA (CML),Y
  661.           STY YSAV1
  662.           CMP #$0D       ; CR?
  663.           BNE PPR6       ; NO
  664.           JSR PGEND
  665.           LDA STOPF
  666.           BNE PRTN1
  667.           JSR PRNTLM
  668.           LDY #0
  669.           STY PPOS       ; RESET PPOS
  670.           JMP PPR7
  671. PPR6      ORA #$80       ; PRINT CHARACTER
  672.           JSR COUT
  673. PPR7      LDY YSAV1      ; RESTORE Y
  674.           CPX WRDLEN     ; END OF WORD?
  675.           BNE PPLP3      ; NO
  676.           JMP NXTWRD     ; GET NEXT WORD
  677. PRTN      LDA #$8C       ; FORM FEED
  678.           JSR COUT
  679. PRTN1     RTS
  680. * END OF PAGE?
  681. PGEND     ORA #$80       ; PRINT CR
  682.           JSR COUT
  683.           INC LN
  684.           LDA LN
  685.           CMP BM         ; BOTTOM MARGIN?
  686.           BNE PGD1       ; NO
  687.           LDA #$0C
  688.           JSR COUT
  689.           LDA #0
  690.           STA LN
  691.           JSR PAUSE
  692. PGD1      RTS
  693. ****************
  694. * SET TOP MARGIN
  695. ****************
  696. SETTM     LDA #$8D       ; CR
  697.           JSR COUT
  698.           INC LN
  699.           LDA LN
  700.           CMP TM
  701.           BCC SETTM
  702.           RTS
  703. *********************
  704. * PAUSE TO LOAD PAPER
  705. *********************
  706. PAUSE     LDA #30
  707.           STA CH
  708.           LDA #9
  709.           JSR TABV
  710. PAUSE1    JSR KEYIN
  711.           CMP #$9B
  712.           BNE PSE1
  713.           INC STOPF
  714.           RTS
  715. PSE1      CMP #$A0
  716.           BNE PAUSE1
  717.           JSR SETTM
  718.           RTS
  719. *******************
  720. * PRINT LEFT MARGIN
  721. *******************
  722. PRNTLM    LDA #$A0
  723.           LDY LM
  724. LMLP      JSR COUT
  725.           DEY
  726.           BNE LMLP
  727.           RTS
  728. ***************************
  729. * COMMAND CODES & ADDRESSES
  730. ***************************
  731. CMDCODE   DFC $85,$9B,$95,$88,$8A,$8B,$89
  732.           DFC $86,$83,$8C,$99,$9A,$8D,$84,$FF
  733. CMDADR    DFC CHGCSR,CHGCSR/
  734.           DFC ESC,ESC/
  735.           DFC RARR,RARR/
  736.           DFC LARR,LARR/
  737.           DFC DNARR,DNARR/
  738.           DFC UPARR,UPARR/
  739.           DFC TAB,TAB/
  740.           DFC FRSTLN,FRSTLN/
  741.           DFC CNTRLN,CNTRLN/
  742.           DFC LASTLN,LASTLN/
  743.           DFC CLEAREOL,CLEAREOL/
  744.           DFC SHOWCR,SHOWCR/
  745.           DFC RTN,RTN/
  746.           DFC DELETE,DELETE/
  747.           DFC DELETE,DELETE/
  748. ***************************
  749. * VARIOUS FLAGS & REGISTERS
  750. ***************************
  751. IMODE     DFC 0
  752. CRF       DFC 0
  753. CRSF      DFC 0
  754. STOPF     DFC 0
  755. LEN0      DFC 0
  756. WRDLEN    DFC 0
  757. FLN       DFC 1
  758. LLN       DFC 1
  759. CHSAV     DFC 0
  760. CVSAV     DFC 0
  761. LNSAV     DFC 0
  762. YSAV      DFC 0
  763. YSAV1     DFC 0
  764. PTRSAV    DFS 2
  765. ****************
  766. * ESCAPE MESSAGE
  767. ****************
  768. ESCMSG    DFC 22,0
  769.           ASC "ESCAPE: MAIN MENU"
  770.           DFC 0
  771. *********************
  772. * LINE/COLUMN MESSAGE
  773. *********************
  774. MSGLC     DFC 0,23
  775.           ASC "LINE      COLUMN"
  776.           DFC 0
  777. S         \:::'f:"<ARROWS> - MOVE CURSOR"-p:Sz:"<ESCAPE> - RETURN TO MAIN MENU"Y::"<DELETE> - DELETE CHAR LEFT OF CURSOR" :7":"<CTRL>-D - DELETE CHAR UNDER CURSOR"=,:l6:"<CTRL>-E - CHANGE INSERT/REPLACE CURSOR"r@:J:"<CTRL>-Y - CLEAR FROM CURSOR TO EOL"#T:O^:"<CTRL>-Z - SHOW CR'S AS INV ASTERISK"Uh:r:"   <TAB> - MOVE CURSOR TO NEXT TAB POS" |:.:"<CTRL>-F - MOVE TO FIRST LINE"T:"<CTRL>-C - MOVE TO CENTER LINE"y:"<CTRL>-L - MOVE TO LAST LINE";,$1:"24::"PRESS RETURN TO CONTINUE: ";:>A$:+4202.:>82  QUITDB:uL:"10::"DO YOU REALLY WANT TO QUIT (Y/N)? ";}V>A$`-A$P"Y"NA$P"y"D1790,j-A$P"N"NA$P"n"D4206t+1750>~:D:b2  FILENAME INPUT ROUTINEh:{&:N$P"":ESCFP0%0"2::"ENTER FILENAME FOR DOCUMENT"::::H::"PRESS '?' TO CATALOG DISK"::yD:"ESCAPE ON 1ST CHAR RETURNS TO MAIN MENU"::BN:"ESCAPE ON ANY OTHER CHARACTER"::" CANCELS INPUT AND STARTS OVER"::^X:"RETURN ACCEPTS INPUT"xb1:"15::"FILENAME: ";l>C$v-C$PE$DESCFP1:1w-C$P"?"D:D$h("CATALOG",7I4JPRODOS)",S"ST",D"DR:1:"24::"PRESS RETURN TO CONTINUE: ";:>A$:+1830
  778. ANPf(C$)-ANO96MANQ123DANPANI32c-ANQ65NANO90DMSG$P"FIRST POSITION MUST BE A LETTER":02250:+1830n(:g(AN){N$Pg(AN)<KP1A15F1:"18: I958(P"15:(11HK)0Z>C$Hd-C$PE$DKP15::+1830fn-C$Pg(8)MKP1DKP15::+1830x-C$Pg(8)DKPKI1:(11HK)::" ":N$Ph(N$,K):+20002-C$PR$DLCPK:KP15:+2110? ANPf(C$)Z-ANO96MANQ123DANPANI32: -(ANQ65NANO90)M(ANQ48NANO57)MANQO46DMSG$P"CHARACTER CANNOT BE USED IN FILENAME":02250:+1990E*:g(AN)U4N$PN$Hg(AN)[>#H-C$QOR$DMSG$P"FILENAME TOO LONG, LIMIT - 15 CHARACTERS":02250:+1830.RFL$PN$:\IP0A15If9FADDRHI,0Op^zKP1Ac(N$)~9FADDRI1HK,f(j(N$,K,1))H1289FADDRHLC,0"1 ,:662  ERROR MESSAGES<@:DJ:B$OT1:"18]^:MSG$::::h:"PRESS RETURN AND TRY AGAIN: ";:9I16368,0:>AA$r1|:; 2  PRINTER MARGIN ROUTINEA :T :N$P"":ESCFP0$ "2::"ENTER VALUE FOR "M$::"MAXIMUM "MA$" - MINIMUM "MI$::C. :"ESCAPE ON 1ST CHAR RETURNS TO MAIN MENU":: 8 :"ESCAPE ON ANY OTHER CHARACTER"::" CANCELS INPUT AND STARTS OVER"::(B :"RETURN ACCEPTS INPUT"ZL :::"RETURN ON 1ST CHAR ACCEPTS DEFAULT (1.0)"qV 1:"15::M$":  1.0"|` 5:"15 j >C$ t -C$PE$DESCFP1:1. ~ -C$PR$DN$P"1.0":1;  ANPf(C$)a  -ANQ48NANO57DMSG$PM3$:02250:+2330p  :C$;: I868z & N$PC$ 0 KP1A3 : 1:"18: I958% D "15:(5HK)- N >C$D X -C$PE$DKP3::+2330a b -C$Pg(8)MKP1DKP3::+2330!l -C$Pg(8)DKPKI1:(5HK)::" ":N$Ph(N$,K):+2500&!v -C$PR$DKP3:+26003!
  779. ANPf(C$)b!
  780.  
  781. -(ANQ48NANO57)MANQO46DMSG$PM3$:02250:+2490j!
  782. :C$w!
  783. N$PN$HC$}!(
  784. A!2
  785. -C$QOR$DMSG$P"INPUT TOO LONG, LIMIT - 3 CHARACTERS":02250:+2330G!<
  786. 1M!F
  787. :k!P
  788. 2 ERASE CURRENT DOCUMENT?q!Z
  789. :4"d
  790. :ESCFP0:"8::"YOU ARE ABOUT TO ERASE"::"THE CURRENT DOCUMENT."f"n
  791. "12::"DO YOU REALLY WANT TO DO THIS? (Y/N) ";n"x
  792. >A$
  793. "
  794. -A$P"N"NA$P"n"DESCFP1:1$"
  795. -A$QO"Y"MA$QO"y"D2680*"
  796. 10" 
  797. :L"*
  798. 2 SELECT SLOT AND DRIVER"4
  799. :#>
  800. :"1::"WHICH SLOT DO YOU WANT TO USE? (2-7) ";
  801. #H
  802. >A$>#R
  803. -A$PO"2"MA$QPg(54HPRODOS)D:A$:STPe(A$):+2790H#\
  804. +2760#f
  805. "5::"WHICH DISK DRIVE"::"DO YOU WANT TO USE? (1-2) ";
  806. #p
  807. >A$0#z
  808. -A$P"1"NA$P"2"D:A$:DRPe(A$):+2830:# +2800n# 9216,0:%+2870:-PRODOSD:D$"PREFIX,S";ST;",D";DR:# -PRODOSD+420       
  809.  
  810.           
  811. 
  812. 
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.           
  820. 2*********************72* FIVER.DICER       *R2* BY DAVID KALLAS   *m2* COPYRIGHT  1988   *2* MICROSPARC, INC.  *#2* CONCORD, MA 01742 *>2*********************R
  821.  :::g(21):+130g2* CENTER TEXT *(21Ic(X$)K2)::X$:1 (2* CENTER-OUT WIPE *; 2XP1A20:932,20IX:933,2JX:::1V <2* WAIT FOR KEYPRESS *x FX$P"PRESS RETURN TO CONTINUE" P030:9CL,0:5KB,128:1, Z2* GET (Y/N) RESPONSE *Y d9CL,0:>X$:-X$P"Y"NX$P"y"NX$P"N"NX$P"n"D1b n+100z x2** INTRODUCTION **N
  822. )210:XP5A25:"1:XI4::" DICER";:40IX::"FIVER ";::)255:20::"--":2MOVING TITLE4
  823. "7:X$P"A GAME OF LUCK AND SKILL":030:X$P"IN WHICH YOU MATCH WITS":030:X$P"WITH YOUR COMPUTER":030 "12:X$P"BY DAVID KALLAS":030:X$P"COPYRIGHT (C) 1988":030:X$P"MICROSPARC,  INC.":0308  KBP49152:"23:070:+1520:2INIT. VARIABLESy *XP0A12:91024HX,32:91063IX,32::2DRAW INVERSE LINE AT VTAB 19 4934,1:050:X$P"PLAY AGAINST COMPUTER?":"5:030:17::"(Y/N) "; >0100::X$:"8:-X$P"Y"NX$P"y"D"ENTER YOUR NAME: ";NM$(1):NM$(0)P"APPLE II":OPP1:+210H HXP0A1::"ENTER NAME OF PLAYER #"XH1;:": ";NM$(X): R:::"PLAYER TO GO FIRST? (1 OR 2)"::"1) "NM$(0)::"2) "NM$(1):"b(37)I2:304 \>X$:PLP0:-X$P"1"DPLP1:+250E f-X$QO"2"D220Z p2** MAIN LOOP **
  824. z050:XPV(0):PLPFPL:RDPRDH1:-RDO26D1410:2ONLY 13 ROUNDS PER PLAYER?
  825. X$PNM$(PL)H"'S TURN":"6:030n
  826. XP0A19:"3:XJ2H1::"+-":"9:39IXJ2::"-+":m
  827. "17:XP1A6::"<"g(XH64)"> "SC$(X,PL),"<"g(XH70)"> "SC$(XH6,PL):::,"<M> "SC$(13,PL):"24::"PLAYER: "NM$(PL);:2DRAW SCORECARD$"-PLP0MOPD"5::: I868:ZP3:0470:+890:2COMPUTER'S TURN=,2** PLAYER'S TURN **W6"6: I868:"13: I868:1@0470:0330:0330:+520:2ALLOWS FOR 2 RE-ROLLSTJ"11:X$P"ROLL DICE AGAIN?":030:::17::"(Y/N) ";:0100:-X$P"N"NX$P"n"D!:+520nT2** PLAYER RE-ROLL **(^"10::::"KEYS 1-5 TOGGLE ";:::"ROLL";:::" / KEEP "::h::"INVERSE";:::" #'S INDICATE DICE TO BE ROLLED":::::"RETURN";:::" RE-ROLLS THE SELECTED DICE"=r"8:XP0A4:XJ8H4::XH1;::2NUMBER THE DICE|9CL,0:5KB,128:XPb(KB)I128:-XQO13M(XQ49NXO53)D380:2ONLY 1,2,3,4,5 OR 'RETURN'-XP13D410oXPXI49:YP1923H8JX:XP(b(Y)Q128)J128H49HX:9Y,X:+380:2POKE FLASH/NORMAL TO SCREEN-XP0A4:-b(1923H8JX)Q128DD(X,0)P0:2IF INVERSE THEN RE-ROLLi$:"7::: I868:XP11A15:"X: I868::2GET RID OF DIRECTIONS.2* ERASE UNWANTED DICE *J8XP0A4:-D(X,0)P0D"5:YP1A3:8JXH3::"   "::23 SPACES BETWEEN ""PBoL2** ROLL/DRAW/SORT DICE **@VSPPb(241):)220::XP0A4:-D(X,0)P0DD(X,0)PS([(1)J6H1):YP0A9:YYPb(BZ)::2ROLL|`932,XJ8H2:"5::DP$(D(X,0)):D(X,1)PD(X,0)::932,0::2DRAW-jYP0A3:-D(Y,1)QPD(YH1,1)D::932,0:9241,SP:1etXPD(Y,1):D(Y,1)PD(YH1,1):D(YH1,1)PX:+490:2SORT DICE~2** PLAYER'S SCORING **]"10:::X$P"WHICH CATAGORY DO YOU CHOOSE":030:::X$P"FOR THIS TURN?":030:::X$P"(A-M) ":030"15:24:>X$:XPf(X$):XPXI32J(XO96MXQ123)I64:-XQ1NXO13D520|-i(SC$(X,PL),1)QO":"D"11:X$P"CATAGORIES CANNOT BE RE-USED":030:::X$P"SELECT ANOTHER":030:+530$&CTPX:2GET CATAGORY # FOR SCORE-TEST702** SCORING **`:SCP0:-CTQ7D0680:+590:2SINGLES COLUMND4CTI60710,710,780,780,780,830,8706N-PLP0MOPP1DFL(CT)PSC:1:2FOR COMPUTER'S TURNRX2** ADD TO SCORECARD **wb-SCQ10DSC$(CT,PL)PSC$(CT,PL)H" "HlSC$(CT,PL)PSC$(CT,PL)Hd(SC):T(PL)PT(PL)HSC:2ADD SCORE TO SCORECARD AND TOTALv:XP1A2:"16HCTI6J(CTO6):5H16J(CTO6)::SC$(CT,PL):IP1A1000::2HIGHLIGHT SELECTIONNYP11A15:"Y: I868::::2RESTORE SELECTION~
  828. "13:070:XP0A4:D(X,0)P0::2CLEAR DICE ARRAY+250:2NEXT PLAYER-2** SCORING TESTS **L(XP0A4:-D(X,0)PCTDSCPSCHCT`2:1:21'S TO 6'S~<2 ** LARGE & SMALL RUN **FYP3:-CTP8DYP4:2SET COUNTERFPXP0A3:-D(X,1)H1PD(XH1,1)DYPYI1:+740}Z-D(X,1)QOD(XH1,1)M(XP1NXP2)DYPYH1:2NOT IN SEQUENCEd:-YO0D1:2 NEITHER RUN.nSCP30:-CTP8DSCP404x1O2 ** 3,4,& 5 DICERS **| YP25:-CTQ11DYP17:-CTP9DYP11:2SET COUNTER%XP0A4:XXP0A4:-D(X,0)PD(XX,0)DYPYI1? ::-YQ1DSCP(CTI6)J10E*1]42 ** THREE & TWO **>-D(0,1)PD(1,1)MD(1,1)PD(2,1)MD(3,1)PD(4,1)DSCP40:1IH-D(4,1)PD(3,1)MD(3,1)PD(2,1)MD(1,1)PD(0,1)DSCP40OR1d\2 ** POT LUCK **
  829.